<?php

require_once ROOT . 'server/classes/arquitetura/helper/AbstractHelper.class.php';

class CategoriaHelper extends AbstractHelper {

    /**
     * Building Categoria object
     * @param $objRequest  Pass $_POST or $_GET or $_REQUEST
     */
    public static function getObjFromRequest($objRequest) {
        $categoria = new Categoria();
        $categoria->setId(Util::getRequestVal($objRequest, 'id'));
        $categoria->setNome(Util::getRequestVal($objRequest, 'nome'));
        $categoria->setUpdateDate(Util::getRequestVal($objRequest, 'updateDate'));
        return $categoria;
    }

    /**
     * Building Categoria object
     * @param $objDB  Pass the object returned from Database
     */
    public static function getObjFromDB($objDB) {
        $categoria = new Categoria();
        $categoria->setId(Util::getObjUsingKey($objDB, 'id'));
        $categoria->setNome(Util::getObjUsingKey($objDB, 'nome'));
        $categoria->setInsertDate(Util::getObjUsingKey($objDB, 'insert_date'));
        $categoria->setUpdateDate(Util::getObjUsingKey($objDB, 'update_date'));
        return $categoria;
    }

    /**
     * Build data's part of json
     * @param type $entity
     * @return array.
     */
    public static function getJsonFromEntity($entity) {
        $mat = array('id' => $entity->getId(),
                     'nome' => $entity->getNome(),
                     'insertDate' => $entity->getInsertDate(),
                     'updateDate' => $entity->getUpdateDate());
        return $mat;
    }

    /**
     * Validando as informações de Categoria.
     */
    public static function validarModel($model) {
        $log = new Log();
        $result = TRUE;
        $erros = array();

        //OBS: A funcao isEmpty deve receber uma variavel e não uma chamada a um metodo

        $nome = $model->getCategoria()->getNome();
        if (Util::isEmpty($nome)) {
            $erros['nome'] = 'Preenchimento obrigatório de Nome.';
        }

        if (IHelper::ZERO < count($erros)) {
            if($log->isInfoEnabled()) {
                $log->logInfo('Modelo invalido.');
            }
            $model->setResult(ResultFactory::newResultFalhaValidacao($erros));
            $result = FALSE;
        }
        
        if($log->isInfoEnabled()) {
            $log->logInfo('Modelo validado com sucesso.');
        }
        
        return $result;
    }

}

?>
